package com.itheima.web;

import com.itheima.utils.CookieUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;

@WebServlet("/visitServlet")
public class VisitServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /*
        获取上一次访问时间
        1.获取浏览器发送过来的所有cookie

        2.判断是否是第一次访问时间的cookie（找到制定名词的cookie）
        3.没有：即为第一次访问
            3.1 打印:"欢迎第一次访问该网站"
            3.2 将当前的时间保存在cookie中，这就是下一次的访问时间
        4.如果不是第一次
            4.1 从cookie中获取上一次的访问时间
            4.2 奖上一次访问时间打印到页面上
            4.3 将当前时间保存到cookie中，这就是下一次要显示的是时间
        * */
        //记录上一次访问时间
        /*1.如果第一次访问，则打印第一次访问,获取所有的cookie，然后遍历所有的cookie，查找制定的标签的cookie，如果没有，那么就是第一次访问，记录时间，并且显示*/
        /*//响应中文乱码的问题
        response.setContentType("text/html;charset=utf-8");*/
        Cookie[] cookies = request.getCookies();
        Cookie lastVisit = CookieUtils.FindCookie(cookies, "lastVisit");
        String lastTime =null;
        if (lastVisit==null) {
            Date date = new Date();
            SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
            String format = sdf.format(date);
            lastTime ="欢迎您第一次访问!";
            response.getWriter().write(lastTime);
            Cookie cookie = new Cookie("lastVisit",format);
            response.addCookie(cookie);
        }else{
            lastTime="上次访问的时间为"+lastVisit.getValue();
            response.getWriter().write(lastTime);
            Date date = new Date();
            SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
            String format = sdf.format(date);
            Cookie cookie = new Cookie("lastVisit",format);
            response.addCookie(cookie);
        }

        //2.如果不是第一次访问那么就将上一次的访问时间显示出来。
        //

       /* //0.响应中文乱码问题
        response.setContentType("text/html;charset=utf-8");
        //1.获取浏览器发送过来的所有cookie
        Cookie[] cookies = request.getCookies();
        //创建一个CookieUtils对象
//        CookieUtils cookieUtils = new CookieUtils();
        //调用CookieUtils的FindCookie方法，查找相应的cookie是否存在
        Cookie existcookie = CookieUtils.FindCookie(cookies, "lastVisit");
        //判断existcookie的返回值判断
        if (existcookie==null) {
            //如果为空，表示第一次访问
            //3.1 打印:"欢迎第一次访问该网站"
            response.getWriter().write("欢迎第一次访问该网站!");
        }else{
            //不为空，
            //4.1 从cookie中获取上一次的访问时间
            String value = existcookie.getValue();
            //String encode = URLEncoder.encode(value,"utf-8");
            String decode = URLDecoder.decode(value, "utf-8");
            //4.2 将上一次访问时间打印到页面上
            response.getWriter().write("欢迎访问该网站!上一次的访问时间为："+decode);
        }
        //3.2 将当前的时间保存在cookie中，这就是下一次的访问时间(以上两种情况都需要记录当前时间，并保存在cookie中)
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateStr = sdf.format(date);
        //对时间进行编码
        //String encode = URLEncoder.encode(dateStr,"utf-8");
        String decode = URLDecoder.decode(dateStr, "utf-8");
        //4.3 将当前时间保存到cookie中，这就是下一次要显示的是时间
        //创建cookie对象，将时间存在cookie中
        Cookie lastCookie = new Cookie("lastVisit",decode);
        //设置LastCookie的最大有效时长
        lastCookie.setMaxAge(60*60*24*7);
        //将LastCookie添加到response中
        response.addCookie(lastCookie);*/
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}
